package com.yequan.leetcode;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Ex37 {

    public static void main(String[] args) {

        System.out.println("请输入围成圈的人数：");
        Scanner input = new Scanner(System.in);
        int n;
        while (true) {
            n = input.nextInt();
            if (n > 1000) {
                System.out.println("n不能大于 1000,请重新输入");
            } else {
                break;
            }
        }
        List<Integer> group = new ArrayList<>();
        //1、给数组列表初始化数据
        for (int i = 1; i <= n; i++) {
            group.add(i);
        }
        //2、报数
        //第一个人报数为1
        int number = 1;
        //圈里的人循环报数
        for (int i = 0; i < n; i++) {
            //当圈里第i+1个人报道的数是3
            if (number == 3) {
                //圈里第i+1个人退出圈子
                group.remove(i);
                //下一个报数的人在数组列表中的下标值
                i--;
                //圈子的总人数减少1
                n--;
                //通过number++，下一个人报的数是1
                number = 0;
            }
            //报数时，每次加1
            number++;
            //当所有的人报完一圈
            if (i == n - 1) {
                //下一次从圈里的第一个人报，通过for循环的i++,对应数组列表下标值为0
                i = -1;
            }
            //如果整个圈子最后只剩下一人
            if (n == 1) {
                break;
            }
        }
        System.out.println("最后留下的是原来" + group.get(0) + "号的那位。");
    }
}


